package controlador;

import java.awt.FileDialog;
import java.io.File;

import ar.uba.fi.algo3.titiritero.ControladorJuego;
import ar.uba.fi.algo3.titiritero.EjecutoAccionOnClick;
import ar.uba.fi.algo3.titiritero.vista.Ventana;



public abstract class SelectorDeArchivosAccion extends EjecutoAccionOnClick {
	public enum ValoresDeFileManager {SAVE(FileDialog.SAVE),LOAD(FileDialog.LOAD);
		
		private int accion;
	
		private ValoresDeFileManager(int accion){
			this.accion = accion;
		}
	}
	
	
	protected ControladorJuego controlador;
	
	
	public SelectorDeArchivosAccion(ControladorJuego controlador){
		this.controlador = controlador;
	}
	
	public void ejecutarAccion() {		
		controlador.setGrabando(true);
		try{
			FileDialog fd = new FileDialog((Ventana)controlador.getSuperficieDeDibujo(),
										getTituloVentana(),	getTipoDeDialogo().accion);
			fd.setFilenameFilter(new XMLFilenameFilter());
			fd.setVisible(true);			
			String dir = fd.getDirectory();
			String file = dir + File.separator + fd.getFile();
			resolverQueHaceConArchivo(file);
		} finally {
			controlador.setGrabando(false);
		}
	}

	protected abstract String getTituloVentana();
	protected abstract void resolverQueHaceConArchivo(String archivo);
	protected abstract ValoresDeFileManager getTipoDeDialogo();

}
